package com.wyu.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@WebServlet("/FileServlet")
public class FileServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String filePath = "D:\\JavaWeb\\CTCKGLXT\\web\\file\\";
        System.out.println(filePath);

        Map map = new HashMap();

        //使用递归来得到所有的文件，并添加到Map集合中
        getAllFiles(new File(filePath), map);

        request.setAttribute("map", map);
        System.out.println(map);
        request.getRequestDispatcher("filedownload.jsp").forward(request, response);



    }

    private void getAllFiles(File filePath, Map map) {

        //如果不是文件，那么它就是文件夹
        if (!filePath.isFile()) {
            //列出文件夹下所有的文件（可能是文件，可能是文件夹）
            File[] files = filePath.listFiles();
            for (File file : files) {

                //得到的文件（或者是文件夹）再对其进行判断
                getAllFiles(file, map);
            }
        } else {
            //进入到else语句了，肯定是文件了
            //得到文件名
            String fileName = filePath.getName().substring(filePath.getName().lastIndexOf("_") + 1);
            //我们将文件全名作为key，文件名作为value保存在map集合中
            map.put(filePath.getName(), fileName);

        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}
